{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from scipy.integrate import dblquad\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib import cm\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "from datetime import datetime, timedelta\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "lat_min, lat_max = 31.1, 31.4\n",
    "lon_min, lon_max = 121.3, 121.8\n",
    "lat_ctr = (int)((lat_max - lat_min) / 0.005)\n",
    "lon_ctr = (int)((lon_max - lon_min) / 0.005)\n",
    "\n",
    "def lat_quantize(lat):\n",
    "    return (int)((lat - lat_min) / 0.005)\n",
    "def lon_quantize(lon):\n",
    "    return (int)((lon - lon_min) / 0.005)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "rcar_dtype = {'car_id': str,\n",
    "                  'date_time': str,\n",
    "                  'lat': float,\n",
    "                  'lon': float,\n",
    "                  'power_mode': str,\n",
    "                  'mileage': float,\n",
    "                  'speed': float,\n",
    "                  'fuel_consumption': float}\n",
    "ecar_dtype = {'car_id': str,\n",
    "                  'date_time': str,\n",
    "                  'lat': float,\n",
    "                  'lon': float,\n",
    "                  'work_mode': str,\n",
    "                  'mileage': float,\n",
    "                  'speed': float,\n",
    "                  'avg_fuel_consumption': float,\n",
    "                  'system_mode': str}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = pd.read_csv(\"./data/rcar/BOT_data_rcar_20170102_20170102_part0.csv\", dtype=rcar_dtype)\n",
    "data = data[(data['lat'] > 0.1) & (data['lon'] > 0.1)]\n",
    "data[\"date_time\"] = data[\"date_time\"].apply(lambda x: datetime.strptime(x, \"%Y-%m-%d %H:%M:%S\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = pd.read_csv(\"./data/ecar/BOT_data_ecar_20170102_20170102_part0.csv\", dtype=ecar_dtype)\n",
    "data = data[(data['lat'] > 0.1) & (data['lon'] > 0.1)]\n",
    "data[\"date_time\"] = data[\"date_time\"].apply(lambda x: datetime.strptime(x, \"%Y-%m-%d %H:%M:%S\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def integrate_density(density):\n",
    "    for col in range(1,density.shape[1]):\n",
    "        density[0][col] += density[0][col-1];\n",
    "    for row in range(1,density.shape[0]):\n",
    "        density[row][0] += density[row-1][0]\n",
    "        for col in range(1,density.shape[1]):\n",
    "            density[row][col] += (density[row][col-1] \n",
    "                                + density[row-1][col] \n",
    "                                - density[row-1][col-1]);\n",
    "                \n",
    "    return density"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "def extract_hist(data):\n",
    "    hist, xedges, yedges = np.histogram2d(data['lat'], data['lon'],\n",
    "        bins = [range(lat_ctr),\n",
    "                range(lon_ctr)],\n",
    "        range=[[0, lat_ctr],\n",
    "               [0, lon_ctr]])\n",
    "    #hist = integrate_density(hist)\n",
    "    #xpos, ypos = np.meshgrid(xedges[1:], yedges[1:])\n",
    "    #X = np.stack((xpos.flatten(), ypos.flatten()), axis=1)\n",
    "    #y = hist.flatten()\n",
    "    #return X, y\n",
    "    return hist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jachinshen/.local/lib/python3.6/site-packages/ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  This is separate from the ipykernel package so we can avoid doing imports until\n",
      "/home/jachinshen/.local/lib/python3.6/site-packages/ipykernel_launcher.py:5: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  \"\"\"\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def get_density_hour(data, hour_begin, hour_end):\n",
    "    data_hour = data[(hour_begin <= data['date_time']) & (data['date_time'] < hour_end)]\n",
    "    data_hour['lat'] = data_hour['lat'].apply(lambda lat:\n",
    "        (int)((lat-lat_min) / 0.005))\n",
    "    data_hour['lon'] = data_hour['lon'].apply(lambda lon:\n",
    "        (int)((lon-lon_min) / 0.005))\n",
    "    data_hour = data_hour.drop_duplicates(['car_id', 'lat', 'lon'])\n",
    "    hist  = extract_hist(data_hour)\n",
    "    '''\n",
    "    fig = plt.figure(figsize=(12, 8))\n",
    "    ax = fig.gca(projection='3d')\n",
    "    \n",
    "    ax.plot_surface(xpos, ypos, hist, cmap=cm.coolwarm, \n",
    "                    linewidth=0, antialiased=False)\n",
    "    ax.set_xlabel(\"lat\")\n",
    "    ax.set_ylabel(\"lon\")\n",
    "    #ax.set_zlim(0, 2000)\n",
    "    fig.suptitle(\"{} to {}\".format(hour_begin, hour_end))\n",
    "    plt.show()\n",
    "    '''\n",
    "    return hist\n",
    "\n",
    "hist = get_density_hour(data, datetime(2017, 1, 2, 13), datetime(2017, 1, 2, 14))\n",
    "plt.imshow(hist)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n"
     ]
    }
   ],
   "source": [
    "def get_range_density(hist, range_xy):\n",
    "    #center_lat = lat_quantize((range_xy[0][0] + range_xy[0][1]) / 2)\n",
    "    #center_lon = lon_quantize((range_xy[1][0] + range_xy[1][1]) / 2)\n",
    "    center_lat = lat_quantize(range_xy[0][0])\n",
    "    center_lon = lon_quantize(range_xy[1][0])\n",
    "    return (int)(hist[center_lat][center_lon])\n",
    "print(get_range_density(hist, [[31.31, 31.315], [121.790, 121.795]]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_sub['car_number'] = X_sub.apply(\n",
    "        lambda row: get_range_density(hist,\n",
    "            [row['latitude_range'], row['longitude_range']]), axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "def convert_str_range(string):\n",
    "    string_split = string.split('~')\n",
    "    return list(map(float, string_split))\n",
    "def get_submission_range():\n",
    "    X_sub = pd.read_csv(\"./A-test.csv\")\n",
    "    X_sub['latitude_range'] = X_sub['latitude_range'].apply(convert_str_range)\n",
    "    X_sub['longitude_range'] = X_sub['longitude_range'].apply(convert_str_range)\n",
    "    return X_sub\n",
    "X_sub = get_submission_range()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_dataset():\n",
    "    frames = []\n",
    "    features_need = ['car_id', 'date_time', 'lat', 'lon']\n",
    "    rcar_dtype = {'car_id': str,\n",
    "                  'date_time': str,\n",
    "                  'lat': float,\n",
    "                  'lon': float,\n",
    "                  'power_mode': str,\n",
    "                  'mileage': float,\n",
    "                  'speed': float,\n",
    "                  'fuel_consumption': float}\n",
    "    ecar_dtype = {'car_id': str,\n",
    "                  'date_time': str,\n",
    "                  'lat': float,\n",
    "                  'lon': float,\n",
    "                  'work_mode': str,\n",
    "                  'mileage': float,\n",
    "                  'speed': float,\n",
    "                  'avg_fuel_consumption': float,\n",
    "                  'system_mode': str}\n",
    "    for part in range(3):\n",
    "        filename = (\"./data/rcar/BOT_data_rcar_20170306_20170306_part{}.csv\"\n",
    "                    .format(part))\n",
    "        data_part = pd.read_csv(filename, dtype=rcar_dtype)[features_need]\n",
    "        data_part = data_part[(data_part['lat'] > 0.1) & (data_part['lon'] > 0.1)]\n",
    "        frames.append(data_part)\n",
    "        \n",
    "        filename = (\"./data/ecar/BOT_data_ecar_20170306_20170306_part{}.csv\"\n",
    "                    .format(part))\n",
    "        data_part = pd.read_csv(filename, dtype={'system_mode': str})[features_need]\n",
    "        data_part = data_part[(data_part['lat'] > 0.1) & (data_part['lon'] > 0.1)]\n",
    "        frames.append(data_part)\n",
    "        \n",
    "    data = pd.concat(frames)\n",
    "    data[\"date_time\"] = data[\"date_time\"].apply(lambda x: datetime.strptime(x, \"%Y-%m-%d %H:%M:%S\"))\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "def unit_1(hour):\n",
    "    data = get_dataset()\n",
    "    return data\n",
    "data = unit_1(9)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>car_id</th>\n",
       "      <th>date_time</th>\n",
       "      <th>lat</th>\n",
       "      <th>lon</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>r34235</td>\n",
       "      <td>2017-03-06 00:03:53</td>\n",
       "      <td>31.018168</td>\n",
       "      <td>121.365860</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 15:22:47</td>\n",
       "      <td>31.330719</td>\n",
       "      <td>121.496815</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 15:22:52</td>\n",
       "      <td>31.330717</td>\n",
       "      <td>121.496911</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>r5038</td>\n",
       "      <td>2017-03-06 00:22:25</td>\n",
       "      <td>31.042855</td>\n",
       "      <td>121.449329</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>r5038</td>\n",
       "      <td>2017-03-06 00:22:30</td>\n",
       "      <td>31.042850</td>\n",
       "      <td>121.449340</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>r5038</td>\n",
       "      <td>2017-03-06 00:37:55</td>\n",
       "      <td>31.040563</td>\n",
       "      <td>121.462271</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>r5038</td>\n",
       "      <td>2017-03-06 00:38:00</td>\n",
       "      <td>31.040563</td>\n",
       "      <td>121.462272</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>r5038</td>\n",
       "      <td>2017-03-06 00:37:50</td>\n",
       "      <td>31.040562</td>\n",
       "      <td>121.462271</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 07:28:23</td>\n",
       "      <td>31.311972</td>\n",
       "      <td>121.527494</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 07:28:28</td>\n",
       "      <td>31.311828</td>\n",
       "      <td>121.527402</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 07:32:08</td>\n",
       "      <td>31.311643</td>\n",
       "      <td>121.511418</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 07:35:08</td>\n",
       "      <td>31.318127</td>\n",
       "      <td>121.505698</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 07:37:23</td>\n",
       "      <td>31.322939</td>\n",
       "      <td>121.502357</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 07:37:28</td>\n",
       "      <td>31.323214</td>\n",
       "      <td>121.502223</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 07:40:33</td>\n",
       "      <td>31.330985</td>\n",
       "      <td>121.493165</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 07:40:38</td>\n",
       "      <td>31.331050</td>\n",
       "      <td>121.492767</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 07:43:23</td>\n",
       "      <td>31.348480</td>\n",
       "      <td>121.504476</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 07:43:28</td>\n",
       "      <td>31.348528</td>\n",
       "      <td>121.504584</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 07:56:38</td>\n",
       "      <td>31.397882</td>\n",
       "      <td>121.475497</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 07:56:53</td>\n",
       "      <td>31.397875</td>\n",
       "      <td>121.475494</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 07:56:58</td>\n",
       "      <td>31.397878</td>\n",
       "      <td>121.475493</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 07:57:13</td>\n",
       "      <td>31.398516</td>\n",
       "      <td>121.475474</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 08:06:41</td>\n",
       "      <td>31.396085</td>\n",
       "      <td>121.480848</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 08:06:46</td>\n",
       "      <td>31.395929</td>\n",
       "      <td>121.480835</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 08:09:31</td>\n",
       "      <td>31.390182</td>\n",
       "      <td>121.483716</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 08:09:36</td>\n",
       "      <td>31.389875</td>\n",
       "      <td>121.483765</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 08:13:06</td>\n",
       "      <td>31.384391</td>\n",
       "      <td>121.483162</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 08:13:11</td>\n",
       "      <td>31.384183</td>\n",
       "      <td>121.483137</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 08:14:36</td>\n",
       "      <td>31.381320</td>\n",
       "      <td>121.476083</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>r71264</td>\n",
       "      <td>2017-03-06 15:03:37</td>\n",
       "      <td>31.381307</td>\n",
       "      <td>121.475988</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397126</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 20:32:53</td>\n",
       "      <td>31.250642</td>\n",
       "      <td>121.551008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397127</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 20:35:26</td>\n",
       "      <td>31.235000</td>\n",
       "      <td>121.563512</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397128</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 20:39:01</td>\n",
       "      <td>31.206318</td>\n",
       "      <td>121.560176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397129</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 20:40:56</td>\n",
       "      <td>31.199952</td>\n",
       "      <td>121.537592</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397130</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 20:54:43</td>\n",
       "      <td>31.192462</td>\n",
       "      <td>121.507752</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397131</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 21:13:21</td>\n",
       "      <td>31.169808</td>\n",
       "      <td>121.487320</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397132</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 21:12:26</td>\n",
       "      <td>31.169372</td>\n",
       "      <td>121.484000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397133</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 21:13:44</td>\n",
       "      <td>31.169872</td>\n",
       "      <td>121.488048</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397134</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 21:18:21</td>\n",
       "      <td>31.169000</td>\n",
       "      <td>121.475584</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397135</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 21:16:52</td>\n",
       "      <td>31.168932</td>\n",
       "      <td>121.480328</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397136</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 21:16:32</td>\n",
       "      <td>31.169190</td>\n",
       "      <td>121.482360</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397137</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 21:23:03</td>\n",
       "      <td>31.207320</td>\n",
       "      <td>121.469792</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397138</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 21:23:33</td>\n",
       "      <td>31.212144</td>\n",
       "      <td>121.467848</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397139</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 21:23:43</td>\n",
       "      <td>31.213584</td>\n",
       "      <td>121.466912</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397140</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 21:41:13</td>\n",
       "      <td>31.225074</td>\n",
       "      <td>121.441696</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397141</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 21:43:40</td>\n",
       "      <td>31.221204</td>\n",
       "      <td>121.435672</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397142</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 21:43:55</td>\n",
       "      <td>31.219534</td>\n",
       "      <td>121.433200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397143</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 21:47:20</td>\n",
       "      <td>31.211690</td>\n",
       "      <td>121.419232</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397144</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 21:47:30</td>\n",
       "      <td>31.211454</td>\n",
       "      <td>121.418064</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397145</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 21:50:43</td>\n",
       "      <td>31.209058</td>\n",
       "      <td>121.408568</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397146</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 21:50:27</td>\n",
       "      <td>31.209606</td>\n",
       "      <td>121.409640</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397147</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 21:53:29</td>\n",
       "      <td>31.203834</td>\n",
       "      <td>121.400352</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397148</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 22:00:50</td>\n",
       "      <td>31.197680</td>\n",
       "      <td>121.405048</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397149</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 22:03:37</td>\n",
       "      <td>31.192480</td>\n",
       "      <td>121.404376</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397150</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 22:01:25</td>\n",
       "      <td>31.197494</td>\n",
       "      <td>121.405000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397151</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 22:01:41</td>\n",
       "      <td>31.196360</td>\n",
       "      <td>121.404672</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397152</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 22:07:09</td>\n",
       "      <td>31.198502</td>\n",
       "      <td>121.407160</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397153</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 22:20:24</td>\n",
       "      <td>31.196432</td>\n",
       "      <td>121.389376</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397154</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 22:30:10</td>\n",
       "      <td>31.195712</td>\n",
       "      <td>121.384176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1397155</th>\n",
       "      <td>e10466</td>\n",
       "      <td>2017-03-06 22:32:39</td>\n",
       "      <td>31.192092</td>\n",
       "      <td>121.373848</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>4901585 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         car_id           date_time        lat         lon\n",
       "0        r34235 2017-03-06 00:03:53  31.018168  121.365860\n",
       "1        r71264 2017-03-06 15:22:47  31.330719  121.496815\n",
       "2        r71264 2017-03-06 15:22:52  31.330717  121.496911\n",
       "3         r5038 2017-03-06 00:22:25  31.042855  121.449329\n",
       "4         r5038 2017-03-06 00:22:30  31.042850  121.449340\n",
       "5         r5038 2017-03-06 00:37:55  31.040563  121.462271\n",
       "6         r5038 2017-03-06 00:38:00  31.040563  121.462272\n",
       "7         r5038 2017-03-06 00:37:50  31.040562  121.462271\n",
       "8        r71264 2017-03-06 07:28:23  31.311972  121.527494\n",
       "9        r71264 2017-03-06 07:28:28  31.311828  121.527402\n",
       "10       r71264 2017-03-06 07:32:08  31.311643  121.511418\n",
       "11       r71264 2017-03-06 07:35:08  31.318127  121.505698\n",
       "12       r71264 2017-03-06 07:37:23  31.322939  121.502357\n",
       "13       r71264 2017-03-06 07:37:28  31.323214  121.502223\n",
       "14       r71264 2017-03-06 07:40:33  31.330985  121.493165\n",
       "15       r71264 2017-03-06 07:40:38  31.331050  121.492767\n",
       "16       r71264 2017-03-06 07:43:23  31.348480  121.504476\n",
       "17       r71264 2017-03-06 07:43:28  31.348528  121.504584\n",
       "18       r71264 2017-03-06 07:56:38  31.397882  121.475497\n",
       "19       r71264 2017-03-06 07:56:53  31.397875  121.475494\n",
       "20       r71264 2017-03-06 07:56:58  31.397878  121.475493\n",
       "21       r71264 2017-03-06 07:57:13  31.398516  121.475474\n",
       "22       r71264 2017-03-06 08:06:41  31.396085  121.480848\n",
       "23       r71264 2017-03-06 08:06:46  31.395929  121.480835\n",
       "24       r71264 2017-03-06 08:09:31  31.390182  121.483716\n",
       "25       r71264 2017-03-06 08:09:36  31.389875  121.483765\n",
       "26       r71264 2017-03-06 08:13:06  31.384391  121.483162\n",
       "27       r71264 2017-03-06 08:13:11  31.384183  121.483137\n",
       "28       r71264 2017-03-06 08:14:36  31.381320  121.476083\n",
       "29       r71264 2017-03-06 15:03:37  31.381307  121.475988\n",
       "...         ...                 ...        ...         ...\n",
       "1397126  e10466 2017-03-06 20:32:53  31.250642  121.551008\n",
       "1397127  e10466 2017-03-06 20:35:26  31.235000  121.563512\n",
       "1397128  e10466 2017-03-06 20:39:01  31.206318  121.560176\n",
       "1397129  e10466 2017-03-06 20:40:56  31.199952  121.537592\n",
       "1397130  e10466 2017-03-06 20:54:43  31.192462  121.507752\n",
       "1397131  e10466 2017-03-06 21:13:21  31.169808  121.487320\n",
       "1397132  e10466 2017-03-06 21:12:26  31.169372  121.484000\n",
       "1397133  e10466 2017-03-06 21:13:44  31.169872  121.488048\n",
       "1397134  e10466 2017-03-06 21:18:21  31.169000  121.475584\n",
       "1397135  e10466 2017-03-06 21:16:52  31.168932  121.480328\n",
       "1397136  e10466 2017-03-06 21:16:32  31.169190  121.482360\n",
       "1397137  e10466 2017-03-06 21:23:03  31.207320  121.469792\n",
       "1397138  e10466 2017-03-06 21:23:33  31.212144  121.467848\n",
       "1397139  e10466 2017-03-06 21:23:43  31.213584  121.466912\n",
       "1397140  e10466 2017-03-06 21:41:13  31.225074  121.441696\n",
       "1397141  e10466 2017-03-06 21:43:40  31.221204  121.435672\n",
       "1397142  e10466 2017-03-06 21:43:55  31.219534  121.433200\n",
       "1397143  e10466 2017-03-06 21:47:20  31.211690  121.419232\n",
       "1397144  e10466 2017-03-06 21:47:30  31.211454  121.418064\n",
       "1397145  e10466 2017-03-06 21:50:43  31.209058  121.408568\n",
       "1397146  e10466 2017-03-06 21:50:27  31.209606  121.409640\n",
       "1397147  e10466 2017-03-06 21:53:29  31.203834  121.400352\n",
       "1397148  e10466 2017-03-06 22:00:50  31.197680  121.405048\n",
       "1397149  e10466 2017-03-06 22:03:37  31.192480  121.404376\n",
       "1397150  e10466 2017-03-06 22:01:25  31.197494  121.405000\n",
       "1397151  e10466 2017-03-06 22:01:41  31.196360  121.404672\n",
       "1397152  e10466 2017-03-06 22:07:09  31.198502  121.407160\n",
       "1397153  e10466 2017-03-06 22:20:24  31.196432  121.389376\n",
       "1397154  e10466 2017-03-06 22:30:10  31.195712  121.384176\n",
       "1397155  e10466 2017-03-06 22:32:39  31.192092  121.373848\n",
       "\n",
       "[4901585 rows x 4 columns]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jachinshen/.local/lib/python3.6/site-packages/ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  This is separate from the ipykernel package so we can avoid doing imports until\n",
      "/home/jachinshen/.local/lib/python3.6/site-packages/ipykernel_launcher.py:5: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  \"\"\"\n"
     ]
    }
   ],
   "source": [
    "hist = get_density_hour(data, datetime(2017, 3, 6, 9),\n",
    "                       datetime(2017, 3, 6, 9+1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(hist)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_sub['hour'] = 9"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jachinshen/.local/lib/python3.6/site-packages/ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  This is separate from the ipykernel package so we can avoid doing imports until\n",
      "/home/jachinshen/.local/lib/python3.6/site-packages/ipykernel_launcher.py:5: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  \"\"\"\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def train_baseline():\n",
    "    frames = []\n",
    "    data = get_dataset()\n",
    "    for hour in range(9, 13):\n",
    "        hist = get_density_hour(data, datetime(2017, 3, 6, hour),\n",
    "                               datetime(2017, 3, 6, hour+1))\n",
    "        plt.imshow(hist)\n",
    "        plt.show()\n",
    "        X_sub = get_submission_range()\n",
    "        X_sub['day'] = \"20170313\"\n",
    "        X_sub['hour'] = hour\n",
    "        X_sub['car_number'] = X_sub.apply(\n",
    "            lambda row: (get_range_density(hist,\n",
    "                [row['latitude_range'], row['longitude_range']])), axis=1)\n",
    "        frames.append(X_sub)\n",
    "    return pd.concat(frames)\n",
    "submission = train_baseline()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    grid_id       day  hour  car_number\n",
      "0         1  20170313     9           8\n",
      "1         2  20170313     9           6\n",
      "2         3  20170313     9           9\n",
      "3         4  20170313     9           0\n",
      "4         5  20170313     9           2\n",
      "5         6  20170313     9          14\n",
      "6         7  20170313     9          20\n",
      "7         8  20170313     9           8\n",
      "8         9  20170313     9           9\n",
      "9        10  20170313     9           2\n",
      "10       11  20170313     9          15\n",
      "11       12  20170313     9           6\n",
      "12       13  20170313     9          10\n",
      "13       14  20170313     9          14\n",
      "14       15  20170313     9           1\n",
      "15       16  20170313     9          15\n",
      "16       17  20170313     9           4\n",
      "17       18  20170313     9           3\n",
      "18       19  20170313     9           8\n",
      "19       20  20170313     9          10\n",
      "20       21  20170313     9           8\n",
      "21       22  20170313     9           7\n",
      "22       23  20170313     9          11\n",
      "23       24  20170313     9           1\n",
      "24       25  20170313     9          14\n",
      "25       26  20170313     9           5\n",
      "26       27  20170313     9          18\n",
      "27       28  20170313     9          16\n",
      "28       29  20170313     9          32\n",
      "29       30  20170313     9          11\n",
      "..      ...       ...   ...         ...\n",
      "20       21  20170313    12          11\n",
      "21       22  20170313    12           8\n",
      "22       23  20170313    12           5\n",
      "23       24  20170313    12           3\n",
      "24       25  20170313    12          16\n",
      "25       26  20170313    12           7\n",
      "26       27  20170313    12          23\n",
      "27       28  20170313    12          15\n",
      "28       29  20170313    12          33\n",
      "29       30  20170313    12          13\n",
      "30       31  20170313    12          15\n",
      "31       32  20170313    12           2\n",
      "32       33  20170313    12           9\n",
      "33       34  20170313    12           2\n",
      "34       35  20170313    12          23\n",
      "35       36  20170313    12           7\n",
      "36       37  20170313    12          23\n",
      "37       38  20170313    12          15\n",
      "38       39  20170313    12          18\n",
      "39       40  20170313    12          11\n",
      "40       41  20170313    12          11\n",
      "41       42  20170313    12          27\n",
      "42       43  20170313    12          28\n",
      "43       44  20170313    12          53\n",
      "44       45  20170313    12          18\n",
      "45       46  20170313    12          41\n",
      "46       47  20170313    12          19\n",
      "47       48  20170313    12          20\n",
      "48       49  20170313    12          35\n",
      "49       50  20170313    12          10\n",
      "\n",
      "[200 rows x 4 columns]\n"
     ]
    }
   ],
   "source": [
    "submission = submission.drop(['latitude_range', 'longitude_range'], axis=1)\n",
    "print(submission)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['grid_id', 'day', 'hour', 'car_number'], dtype='object')"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "submission.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "submission.to_csv(\"./submission.csv\", index=False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
